/**

This file is part of MaCI/GIMnet.

MaCI/GIMnet is free software: you can redistribute it and/or modify it 
under the terms of the GNU Lesser General Public License as published 
by the Free Software Foundation, either version 3 of the License, or 
(at your option) any later version.

MaCI/GIMnet is distributed in the hope that it will be useful, but WITHOUT 
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public 
License for more details.

You should have received a copy of the GNU Lesser General Public 
License along with GIMnet. (See COPYING.LESSER) If not, see 
<http://www.gnu.org/licenses/>.

**/
/**
 * \file
 * \brief SQL Query container - header.
 * \author Antti Maula <antti.maula@tkk.fi>
 */
#ifndef _MACI_INTERFACE_SQL_SQLQUERY_HPP_
#define _MACI_INTERFACE_SQL_SQLQUERY_HPP_
#include <string>

namespace MaCI {
  namespace SQL {

    /** SQL Query encapsulation class.
     * 
     * This class is a encapsulation for storing SQL Queries. Its
     * backend consists of a simple std::string, and its default
     * behaviour is just
     *
     */
    class CSQLQuery
    {
    public:
      /** Default constructor.
       *
       * This default constructor constructs an empty query.
       */
      CSQLQuery(void);


      /** Constructor with string parameter.
       *
       * This constructor constructs a SQLQuery with a raw string as
       * query value string.
       *
       * @param[in] aQuery      Query string to set.
       */
      CSQLQuery(const std::string &aQuery);


      /** Destructor.
       */
      virtual ~CSQLQuery();


      /** Set Query string.
       * 
       * This function assigns the Query string as a single string
       * without any interpretation.
       */
      void SetQueryString(const std::string &aQuery);


      /** Get String representation of the SQL query object.
       *
       */
      const std::string &GetQueryString(void) const;

    private:
      std::string iQueryString; ///< Query string.
    };
  }
}

#endif // _MACI_INTERFACE_SQL_SQLQUERY_HPP_
